package com.chixing.controller;


import com.chixing.service.IMovieService;
import com.chixing.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author liwenjing
 * @since 2025-10-07
 */
@RestController
@RequestMapping("/movie")
public class MovieController {
    @Autowired
    private IMovieService movieService;
    /**
     * 根据状态获取热门电影（前10部）
     * @param status 1=热映中，2=即将上映
     */
    //http://localhost:8080/app/movie/hot?status=1
    @GetMapping("/hot")
    public Result getHotMoviesByStatus(@RequestParam Integer status) {
        return movieService.getHotMoviesByStatus(status);
    }

    /**
     * 根据状态分页查询电影
     * @param status 1=热映中，2=即将上映
     * @param pageNum 页码，默认为1
     */
    // 获取即将上映电影（前10部）
    //GET /movie/hot?status=2
    //
    // 分页查询热映电影
    //GET /movie/page?status=1&pageNum=1
    //
    //分页查询即将上映电影
    //GET /movie/page?status=2&pageNum=1
    //
    // 获取电影详情
    //GET /movie/detail/123
    //
    // 获取热映电影数量
    //GET /movie/count?status=1
    @GetMapping("/page")
    public Result getMoviesByStatusAndPage(@RequestParam Integer status,
                                           @RequestParam(defaultValue = "1") Integer pageNum) {
        return movieService.getMoviesByStatusAndPage(status, pageNum);
    }

    /**
     * 根据电影ID获取电影详情
     */
    @GetMapping("/detail/{movieId}")
    public Result getMovieDetailById(@PathVariable Integer movieId) {
        return movieService.getMovieDetailById(movieId);
    }

    /**
     * 根据状态获取电影数量
     * @param status 1=热映中，2=即将上映
     */
    @GetMapping("/count")
    public Result getMovieCountByStatus(@RequestParam Integer status) {
        Long count = movieService.getMovieCountByStatus(status);
        return Result.getSuccess(count);

    }



    /**
     * 根据用户下单的电影类型推荐相似电影
     * @param userId 用户ID
     * @param num 推荐数量
     * @return 推荐结果
     */
    @GetMapping("/recommendByType")
    public Result recommendByUserOrderType(
            @RequestParam("userId") Integer userId,
            @RequestParam(value = "num", defaultValue = "5") Integer num) {
        return movieService.recommendByUserOrderType(userId, num);
    }




}
